<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript 阶段</title>
</head>
<body>
    <h3>数据的深浅拷贝</h3>

    <script>
        // 数据的深浅拷贝:
        // 作用: 拷贝出来的数据作了修改,不会影响到原来的数据

        var arr = ["red","green","blue",["hello"]];

        // 浅拷贝:
        // 针对数据结构比较简单的数据集合进行复制
        // 它在复制数据的过程中,是不区分数据类型

        // 编码:
        // 未处理的编码:
        function copy(array){
            var newArr = [];// 定义空数组
            for(var i = 0 ; i < array.length ; i ++){//循环数据
                newArr[i] = array[i];// 复制数组里面的数据
            }
            return newArr;// 返回newArr数组
        }

        // 优化浅拷贝代码
        function copy(data){
            // 判断复制的数据是否为数组,或者对象
             var newData = Array.isArray(data) == true ? [] : {};
            // for ... in 语句(数组,对象都可以被循环)
            for(var key in data){
                newData[key] = data[key];// 复制数据
            }
            // 返回新数据
            return newData;
        }
        var res = copy(arr);// 这是复制出来的数据集合
        console.log(res);
        res[0] = "pink";
        res[3][0]="你好";//修改了被嵌套的数组
        console.log(res);// 新的数据
        console.log(arr);// 原来的数据





        // 深拷贝:




    </script>
</body>
</html>